import type { AxiosResponse } from 'axios'
import type { Res } from '/@/tool/Res'
import type { Param } from '/@/tool/Param'

import coreTool from '/@/tool/coreTool'
import coreAxios from '/@/tool/coreAxios'

import type { PostRole } from '/@/model/cn/core/sign/eo/PostRole'
import type { PostRoleQO } from '/@/model/cn/core/sign/qo/PostRoleQO'
import type { PostRoleVO } from '/@/model/cn/core/sign/vo/PostRoleVO'

const url: string = 'sign/postRole'

/**
 * 岗位角色 REST API
 */
export default {
  /**
   * 岗位角色 >>> 保存
   * param 参数
   */
  save(param: Param<PostRole>): Promise<AxiosResponse<Res<PostRole>>> {
    return coreAxios.post<Res<PostRole>>(`${url}${coreTool.save}`, param)
  },
  /**
   * 岗位角色 >>> 批量保存
   * param 参数
   */
  saveBatch(param: Param<PostRole>): Promise<AxiosResponse<Res<PostRole>>> {
    return coreAxios.post<Res<PostRole>>(`${url}${coreTool.saveBatch}`, param)
  },
  /**
   * 岗位角色 >>> 修改
   * param 参数
   */
  update(param: Param<PostRole>): Promise<AxiosResponse<Res<PostRole>>> {
    return coreAxios.post<Res<PostRole>>(`${url}${coreTool.update}`, param)
  },
  /**
   * 岗位角色 >>> 批量修改
   * param 参数
   */
  updateBatch(param: Param<PostRole>): Promise<AxiosResponse<Res<PostRole>>> {
    return coreAxios.post<Res<PostRole>>(`${url}${coreTool.updateBatch}`, param)
  },
  /**
   * 岗位角色 >>> 删除
   * param 参数
   */
  remove(param: Param<PostRole>): Promise<AxiosResponse<Res<PostRole>>> {
    return coreAxios.post<Res<PostRole>>(`${url}${coreTool.remove}`, param)
  },
  /**
   * 岗位角色 >>> 批量删除
   * param 参数
   */
  removeBatch(param: Param<PostRole>): Promise<AxiosResponse<Res<PostRole>>> {
    return coreAxios.post<Res<PostRole>>(`${url}${coreTool.removeBatch}`, param)
  },
  /**
   * 岗位角色 >>> 数据量
   * param 参数
   */
  count(param: Param<PostRoleQO>): Promise<AxiosResponse<Res<PostRole>>> {
    return coreAxios.post<Res<PostRole>>(`${url}${coreTool.count}`, param)
  },
  /**
   * 岗位角色 >>> 主键查询
   * param 参数
   */
  pk(param: Param<PostRoleQO>): Promise<AxiosResponse<Res<PostRole>>> {
    return coreAxios.post<Res<PostRole>>(`${url}${coreTool.pk}`, param)
  },
  /**
   * 岗位角色 >>> 查询
   * param 参数
   */
  query(param: Param<PostRoleQO>): Promise<AxiosResponse<Res<PostRole>>> {
    return coreAxios.post<Res<PostRole>>(`${url}${coreTool.query}`, param)
  },
  /**
   * 岗位角色 >>> 分页
   * param 分页参数
   */
  paging(param: Param<PostRoleQO>): Promise<AxiosResponse<Res<PostRole>>> {
    return coreAxios.post<Res<PostRole>>(`${url}${coreTool.paging}`, param)
  },
  /**
   * 岗位角色 >>> 业务数据量
   * param 参数
   */
  countVo(param: Param<PostRoleQO>): Promise<AxiosResponse<Res<PostRoleVO>>> {
    return coreAxios.post<Res<PostRoleVO>>(`${url}${coreTool.countVo}`, param)
  },
  /**
   * 岗位角色 >>> 业务主键查询
   * param 参数
   */
  pkVo(param: Param<PostRoleQO>): Promise<AxiosResponse<Res<PostRoleVO>>> {
    return coreAxios.post<Res<PostRoleVO>>(`${url}${coreTool.pkVo}`, param)
  },
  /**
   * 岗位角色 >>> 业务查询
   * param 参数
   */
  queryVo(param: Param<PostRoleQO>): Promise<AxiosResponse<Res<PostRoleVO>>> {
    return coreAxios.post<Res<PostRoleVO>>(`${url}${coreTool.queryVo}`, param)
  },
  /**
   * 岗位角色 >>> 业务分页
   * param 分页参数
   */
  pagingVo(param: Param<PostRoleQO>): Promise<AxiosResponse<Res<PostRoleVO>>> {
    return coreAxios.post<Res<PostRoleVO>>(`${url}${coreTool.pagingVo}`, param)
  },
}
